今天主要是介紹一些我們console的tool
在開始前我們將console設成變數,並將會用到的console給寫進去,方便用來如果要開啟或關閉全部console比較方便。
let console = {
isDev: true,
log(...args) {
if (!this.isDev) return;
window.console.log(...args);
},
warn(...args) {
if (!this.isDev) return;
window.console.warn(...args);
},
error(...args) {
if (!this.isDev) return;
window.console.error(...args);
},
info(...args) {
if (!this.isDev) return;
window.console.info(...args);
},
assert(...args) {
if (!this.isDev) return;
window.console.assert(...args);
},
dir(...args) {
if (!this.isDev) return;
window.console.dir(...args);
},
table(...args) {
if (!this.isDev) return;
window.console.table(...args);
},
count(...args) {
if (!this.isDev) return;
window.console.count(...args);
},
time(...args) {
if (!this.isDev) return;
window.console.time(...args);
},
timeEnd(...args) {
if (!this.isDev) return;
window.console.timeEnd(...args);
}
}
console.log(123456789);
console.log("my name is %s", "jojo");
console.log("I have %f dollars", 1.23);
console.log("I have %d dollars", 1.23);
// 但現可用es6 template string模板字符串代替
console.log(`my name is ${name}`);
window.console.log("%c STOP!", "font-size:87px; color:red;");
console.warn("warning");
console.error("error");
上述兩個效果如下:
console.info("在chrome沒有圖標,跟log沒什麼差別");
console.assert("", "測試");
console.assert(false, "測試");
console.assert(null, "測試");
console.assert(undefined, "測試");
console.assert(NaN, "測試");
let p = document.querySelector('p');
console.log(p);
console.dir(p);
console.dir(dogs);
console.log(dogs);
console.dir(console);
console.table(dogs);
console.table(dogs, ["name"])
console.count('jojo');
console.count('jojo');
console.count('giogio');
console.count('giogio');
console.count('jojo');
console.count('giogio');
console.count('jojo');
console.count('giogio');
console.count('giogio');
console.count('giogio');
console.count('giogio');
console.count('giogio');
// i,j都宣告在裡面
console.time("test in"); // fast
for (let i1 = 1; i1 < 8700000; i1++) {
let j1 = i1;
}
console.timeEnd("test in");
// i,j都宣告在外面
console.time("test out"); // slow
let i2;
let j2;
for (i2 = 1; i2 < 8700000; i2++) {
j2 = i2;
}
console.timeEnd("test out");
// i宣告在裡面
console.time("test i in"); // fast
let j3;
for (let i3 = 1; i3 < 8700000; i3++) {
j3 = i3;
}
console.timeEnd("test i in");
// j宣告在裡面
console.time("test j in"); // slow
let i4;
for (i4 = 1; i4 < 8700000; i4++) {
let j4 = i4;
}
console.timeEnd("test j in");
在此處可得知,將全部程式碼包起來( (()=>{code})() )前(左圖),i,j都放在外面及j宣告在裡面都是較慢的,而包起來後,發現每段程式碼執行時間是差不多的(右圖)。